SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO











CREATE PROCEDURE [dbo].[SP_TASALD_EMPR_Q24]
/*-----------------------------------------------------------*/
/*------Empresa     :  OFISIS S.A. 	      	-----*/
/*----- Cliente        : OFISIS S.A.                  -----*/
/*------Sistema      : Contabilidad                  -----*/
/*------M?dulo       : Empresa		----------*/
/*----- Programa       : Diferencia de Cambio           -----*/
/*----- Script         :                                -----*/
/*----- Nombre    SP     : SP_TASALD_EMPR_Q23             -----*/
/*----- Desarrollado por : Marco Acua Paredes       -----*/
/*----- Fecha  Creaci?n        : 11/01/1999                     -----*/
/*----- Base de Datos  : MS SQL Server 		  -----*/
/*----- Versi?n           :  8.0                          -----------*/
/*----- Invoca a SP    :       				  -----*/
/*-----------------------------------------------------------*/
/*-- Drop Proc SP_TASALD_EMPR_Q24                               --------*/
/*-- Grant Execute  On SP_TASALD_EMPR_Q24  To PUBLIC ------------*/
/*-- SP_TASALD_EMPR_Q24  '01' ,1, 2002 , 9,'42101', '42103', 5                --*/
/*-----------------------------------------------------------*/
@ISCO_EMPR		VARCHAR(2),
@INNU_CNTB_EMPR	INTEGER,
@INNU_ANNO		INTEGER,
@INNU_MESE		INTEGER,
@ISCO_CNTA_INIC    VARCHAR(10),
@ISCO_CNTA_FINA    VARCHAR(10),
@INNV_INFO_CNTA    INTEGER
/*--------------------------------------------------------------*/

As
Create Table #TWSALD_EMPR_Q24_1
(CO_CNTA_EMPR  VARCHAR(10)  null,
 DE_CNTA_EMPR      varchar(50)  null,
 IM_DEUD_SOLE      Numeric(16,4)     null,
 IM_ACRE_SOLE      Numeric(16,4)     null,
 IM_DEUD_ORIG      Numeric(16,4)     null,
 IM_ACRE_ORIG     Numeric(16,4)     null,
 IM_MVTO_DIVI      Numeric(16,4)     null)
 


Declare

@VSCO_CNTA_EMPR	VARCHAR(10),
@VSDE_CNTA_EMPR	VARCHAR(50),
@VSCO_MONE       VARCHAR(3),
@VSCO_MONE_001   VARCHAR(3),
@VNIM_SALD_SOLE  NUMERIC(16,4),
@VNIM_SALD_ORIG	NUMERIC(16,4),
@VNIM_0001 	NUMERIC(16,4)






Select @VSCO_MONE =CO_MONE 
 
From   TTCNTB_EMPR
Where  CO_EMPR = @ISCO_EMPR
And    NU_CNTB_EMPR = @INNU_CNTB_EMPR


Declare CU_TASALD_EMPR_Q24 cursor
for
	/*Select T1.CO_CNTA_EMPR, Max(T2.DE_CNTA_EMPR),
	       Max(T2.CO_MONE),
             Sum(T1.IM_CARG_CNTB - T1.IM_ABON_CNTB), 
             Sum(T1.IM_CARG_ORIG - T1.IM_ABON_ORIG ) 
	From   TASALD_EMPR T1, TMPLAN_EMPR T2
	Where  T1.CO_EMPR = @ISCO_EMPR 
      And    T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
      And    T1.NU_ANNO  = @INNU_ANNO 
      And    T1.NU_MESE <= @INNU_MESE 
      And    LEN(RTRIM(T1.CO_CNTA_EMPR)) = @INNV_INFO_CNTA
      And    T1.CO_CNTA_EMPR >= @ISCO_CNTA_INIC
      And    T1.CO_CNTA_EMPR <= @ISCO_CNTA_FINA
      And    T1.TI_AUXI_EMPR IS NULL 
      And    T1.CO_AUXI_EMPR IS NULL 
      And    T1.CO_ORDE_SERV IS NULL 
      And    T2.CO_EMPR = T1.CO_EMPR 
      And    T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR 
      And    T2.CO_MONE <> @VSCO_MONE
      And     T1.NU_ANNO = T2.NU_ANNO
      	Group  By T1.CO_CNTA_EMPR 
*/
SELECT  T1.CO_CNTA_EMPR,Max(T2.DE_CNTA_EMPR), Max(T2.CO_MONE),
       SUM( (PATINDEX(T1.TI_OPER,'CAR')-PATINDEX(T1.TI_OPER,'ABO'))*T1.IM_MVTO_CNTB ),
     SUM( (PATINDEX(T1.TI_OPER,'CAR')-PATINDEX(T1.TI_OPER,'ABO'))*T1.IM_MVTO_ORIG )
FROM TXMVTO_CNTB T1, TMPLAN_EMPR T2
WHERE T1.CO_EMPR = @ISCO_EMPR 
  AND T1.NU_CNTB_EMPR = @INNU_CNTB_EMPR
  AND T1.NU_ANNO = @INNU_ANNO 
  AND T1.NU_MESE <= @INNU_MESE 
  AND T1.CO_CNTA_EMPR >= @ISCO_CNTA_INIC
  AND T1.CO_CNTA_EMPR <= @ISCO_CNTA_FINA
  AND T1.SI_MVTO_CNTB = 'APR'
  AND T2.CO_EMPR = T1.CO_EMPR
  AND T2.CO_CNTA_EMPR = T1.CO_CNTA_EMPR
  AND T2.CO_MONE <> @VSCO_MONE
  AND T2.NU_ANNO = 9999
GROUP BY T1.CO_CNTA_EMPR
 ORDER BY T1.CO_CNTA_EMPR



Open CU_TASALD_EMPR_Q24
Fetch CU_TASALD_EMPR_Q24 into 
      @VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, @VSCO_MONE_001, 
      @VNIM_SALD_SOLE, @VNIM_SALD_ORIG

While @@Fetch_status = 0 
Begin --begin del while
 If @VSCO_MONE = @VSCO_MONE_001  -- caso moneda soles
 Begin   --Select 'entro'
   If ( @VNIM_SALD_SOLE > 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, @VNIM_SALD_SOLE, 
                0.00, 0.00, 0.00, 0.00)

   Else If ( @VNIM_SALD_SOLE < 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, 0.00, 
             @VNIM_SALD_SOLE, 0.00, 0.00, 0.00)

   
 End
 Else If @VSCO_MONE  <> @VSCO_MONE_001 
 Begin
      -- caso moneda distinto soles
   If ( @VNIM_SALD_SOLE > 0 ) and ( @VNIM_SALD_ORIG > 0 ) 
   Begin
      Set @VNIM_0001 = ROUND(@VNIM_SALD_SOLE/@VNIM_SALD_ORIG,2);

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, @VNIM_SALD_SOLE,0.00, 
             @VNIM_SALD_ORIG, 0.00, @VNIM_0001)
   End
   Else If ( @VNIM_SALD_SOLE > 0 ) and ( @VNIM_SALD_ORIG < 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, @VNIM_SALD_SOLE,0.00, 
             0.00, @VNIM_SALD_ORIG, 0.00)

   Else If ( @VNIM_SALD_SOLE < 0 ) and ( @VNIM_SALD_ORIG < 0 ) 
   Begin
      Set @VNIM_0001 = ROUND(@VNIM_SALD_SOLE/@VNIM_SALD_ORIG,2);

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, 0.00, 
             @VNIM_SALD_SOLE,0.00, @VNIM_SALD_ORIG, 
             @VNIM_0001);
   End
   Else If ( @VNIM_SALD_SOLE < 0 ) and ( @VNIM_SALD_ORIG > 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
	Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, 0.00, @VNIM_SALD_SOLE, 
             @VNIM_SALD_ORIG, 0.00, 0.00)

   Else If ( @VNIM_SALD_SOLE = 0 ) and ( @VNIM_SALD_ORIG > 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, 0.00, 0.00, 
             @VNIM_SALD_ORIG, 0.00, 0.00)

   Else If ( @VNIM_SALD_SOLE > 0 ) and ( @VNIM_SALD_ORIG = 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, @VNIM_SALD_SOLE, 
             0.00, 0.00, 0.00, 0.00)

   Else If ( @VNIM_SALD_SOLE < 0 ) and ( @VNIM_SALD_ORIG = 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
      Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, 0.00, @VNIM_SALD_SOLE, 
             0.00, 0.00, 0.00 )

   Else If ( @VNIM_SALD_SOLE = 0 ) and ( @VNIM_SALD_ORIG < 0 ) 

      Insert into #TWSALD_EMPR_Q24_1
	Values(@VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, 0.00, 0.00, 0.00, 
             @VNIM_SALD_ORIG, 0.00 );
   
End 

Fetch CU_TASALD_EMPR_Q24 into
      @VSCO_CNTA_EMPR, @VSDE_CNTA_EMPR, @VSCO_MONE_001,
      @VNIM_SALD_SOLE, @VNIM_SALD_ORIG

End -- end del while



Close CU_TASALD_EMPR_Q24
Deallocate  CU_TASALD_EMPR_Q24


Select CO_CNTA_EMPR, DE_CNTA_EMPR, IM_DEUD_SOLE, IM_ACRE_SOLE, IM_DEUD_ORIG, IM_ACRE_ORIG, IM_MVTO_DIVI
From  #TWSALD_EMPR_Q24_1














GO
